<html>
    <head>
        <title>IObjectMapper</title>
    </head>
    <body>
        <script>
             /*
                        一、IObjectMapper

                                IObjectMapper接口（在 "Volo. Abp.ObjectMap" 包中）定义了一个简单的Map方法。
                                
                                之前介绍的示例代码可以重写如下：

                                    public class UserAppService : ApplicationService
                                    {
                                        private readonly IRepository<User, Guid> _userRepository;

                                        public UserAppService(IRepository<User, Guid> userRepository)
                                        {
                                            _userRepository = userRepository;  // 
                                        }

                                        public async Task CreateUser(CreateUserInput input)
                                        {
                                            // 自定映射
                                            var user = ObjectMapper.Map<CreateUserInput, User>(input);

                                            await _userRepository.InsertAsync(user);
                                        }
                                    }

                                ObjectMapper在本例的ApplicationService基类中定义。你可以在其他地方需要时直接注入IObjectMapper接口。


                                Map方法有两个通用参数： 第一个是源对象类型，而第二个是目标对象类型。


                                如果需要设置现有对象的属性，可以使用Map方法的第二个重载：

                                    public class UserAppService : ApplicationService
                                    {
                                        private readonly IRepository<User, Guid> _userRepository;

                                        public UserAppService(IRepository<User, Guid> userRepository)
                                        {
                                            _userRepository = userRepository;
                                        }

                                        public async Task UpdateUserAsync(Guid id, UpdateUserInput input)
                                        {
                                            var user = await _userRepository.GetAsync(id); // 获取用户实体独享

                                            // 自动创建映射
                                            ObjectMapper.Map<UpdateUserInput, User>(input, user); // 指定往实体对象中映射

                                            await _userRepository.UpdateAsync(user);
                                        }
                                    }


                                你应该在使用映射对象之前定义映射文档。请参阅AutoMapper集成部分以了解如何定义映射。
                    */
        </script>
    </body>
</html>